Day 26 : 公平指標與實作 Fairness Indicators
tags: MLOps
模型公平性的思考
-
隨著 AI 對於各領域和社會的影響逐漸增加,建立公平且可包容所有人的系統至關重要,為達到負責任的 AI,重視公平性,實踐以人為本的設計初衷,確定多個指標來訓練與評估,檢查原始資料、理解資料與模型的局限性、部署後繼續監控和更新系統成了 MLOps 重要動力。
-
關於公平性沒有絕對的定義,不同國情、文化都有在意的事情,您可以參考就業服務法第5條所示的就業平等認定,這是法律揭示應在就業情境中平等的規定,可用以檢視與追蹤您的服務模型與表達方式,以中性字眼表述,並持續調整。
-
平等不是指齊頭式的平等,而是客戶主觀意識認為接受到的服務是有受重視與在意本身需求。像是您不應該向素食主義者優先推薦葷食餐廳,宗教的飲食忌諱應降低推薦優先順序、以雙北生活圈習慣類推全台餐飲口味(北部粽、南部粽與...中部粽?)、推薦青少年不符年齡的遊戲清單、忽視生理性別與心理性別的服務推薦、將“護士”或“保姆”等詞翻譯成西班牙語時使用女性代詞等。以上現象在傳統數據分析、做研究追求整體準確率時不是考慮重點,卻是用於生產的機械學習服務必須要重視的關鍵任務。
就業服務法第五條
- 為保障國民就業機會平等,雇主對求職人或所僱用員工,不得以種族、階級、 語言、思想、宗教、黨派、籍貫、出生地、性別、性傾向、年齡、婚姻、容貌、五官、身心障礙、星座、血型或以往工會會員身分為由,予以歧視;其他法律有明文規定者,從其規定。
-
具體實踐機械學習系統的公平性來說,可以使用 Fairness Indicators 察覺模型數據在不同切片的表現,進行識別、改進模型。Google 的第二條 AI 原則指出,我們的技術應避免產生或強化不公平的偏見,提高模型的公平性。
可觀察公平性的指標
陽性率、陰性率 positive, negative rate
- 基本的陽性或陰性的數據比率。
- 應為獨立標籤,如果是平等的,子資料集也應該是平等的。可以用以檢視不同分組資料集的 PR 與 NR 比率應類似。
- 真陽率 true positive rate (TPR),及假陰率 false negative rate (FPR)。
- 真陽率 TPR 衡量在真實預測中被正確預測為陽性的陽性的比率。
- 假陰率 FNR 衡量被錯誤預測為陰性的陽性數據比率。
- 子資料集也應該有相同的 TPR 與 FNR 。
真假陽性率 TPR / FPR
- 真陰率 true negative rate (TNR) ,衡量實際為陰性、正確預測為陰性的比率。
- 假陽率 false positive rate (FPR) ,衡量實際為陰性、誤報為陽性的比率。
- 子資料集應該也有相似的 TNR 與 FPR。 FPR 誤報在分類的後續錯誤處置方式可能有不良影響,如果子資料集的 FPR 大於整體 FPR ,應該是值得關注的焦點。
準確率和 AUC
- 準確率 Accuracy 為判讀正確的比率, area under the curve (AUC) 為ROC曲線下與座標軸圍成的面積,最大值不大於1。
- 子資料集也應該與整體資料有相似的準確率與 AUC ,如果比較時有顯著差異可能表明您的模型可能存在公平性問題。
公平指標實作
本篇文章採用 TensorFlow 官方 Colab 範例
使用 ( CelebA ) 資料集訓練一個簡單的神經網絡模型來檢測出微笑的明星圖像,部分說明以動畫呈現幫助您理解操作過程。
- 使用公平指標
fairness-indicators,根據跨年齡組的常用公平指標評估模型性能。 - 設置一個簡單的約束優化問題,以在各個年齡段實現更公平的性能。
- 重新訓練現在"受約束的"模型並再次評估性能,確保我們選擇的公平性指標得到改善。
1. 前置作業
-
本示範主要以
fairness-indicators、tensorflow_constrained_optimization(TFCO) 模組與相依套件進行示範,fairness-indicators為 Google 開源的模組,可以比較模型分類結果的公平指標,依賴 TensorFlow Extended (TFX) 的模型分析 TFMA 模組。fairness-indicators可以在驗證資料與模型分析時呈現,另外也可以運用在 TensorBoard 。!pip install -q -U pip==20.2
!pip install git+https://github.com/google-research/tensorflow_constrained_optimization
!pip install -q tensorflow-datasets tensorflow
!pip install fairness-indicators \
"absl-py==0.12.0" \
"apache-beam<3,>=2.31" \
"avro-python3==1.9.1" \
"pyzmq==17.0.0"- 在 Colab 安裝完需重新啟動執行階段 (Restart Runtime)。
-
下載 CelebA 資料集
- CelebA 是一個擁有超過 20 萬張名人圖像的大規模人臉屬性數據集,每個圖像有 40 個屬性註釋(如頭髮類型、時尚配飾、面部特徵等)和 5 個標誌性位置(眼睛、嘴巴和鼻子位置)。
- 建立 "young" 標籤作為預測結果的 y,是布林值。
- 將圖片轉為28X28像素方便訓練。
-
建立訓練模型
- 以
tf.keras.Sequential建立基本模型。 - 設定輔助函數、預處理函數、 用來使用 TFMA 的評述設定等。
- 以
-
檢視資料
- 看明星們心情很好,但請記得此資料集不能作為商業用途喔。

- 用
df.info()得知除了標示位置有座標、影像為矩陣之外,其餘特徵都以布林值表示。

- 看明星們心情很好,但請記得此資料集不能作為商業用途喔。
第 13 屆鐵人賽鍊成